import { message } from "antd";
import axios from "axios";
import { createHashHistory } from 'history';
import { $envApi } from "../common/utils";

export const Service = axios.create({
    timeout: 1000 * 60 * 60, // 延迟时间 1 小时
    baseURL: $envApi(),
})

// 请求拦截
Service.interceptors.request.use(
    (config: any) => {
        // 可以在发送请求之前做些事情
        // 比如请求参数的处理、在headers中携带token等等
        const token = sessionStorage.bearerToken;
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    (err) => {
        // 处理请求错误
        Promise.reject(err.response.data);
    }
);

// 响应拦截
export const $hash = createHashHistory({ window })
Service.interceptors.response.use(res => {
    return res.data
}, err => {

    err["response"]["status"] === 401 ? $hash.push({ pathname: "/login" }) :
        message.error(err["response"]["status"] === 400 ? err["response"]["data"]["error"] : "服务器错误！")
    return Promise.reject(err.response.data)
})